package org.linlinjava.litemall.web.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.linlinjava.litemall.web.vo.order.OrderPackageCheckOutVO;
import java.math.BigDecimal;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("POS结算DTO")
public class WebOrderGoodsCheckOut {

    @ApiModelProperty(value = "设备编号")
    private String deviceNo;
    @ApiModelProperty("订单类型(堂食｜外送)")
    private Byte ordertype;

    @ApiModelProperty("订单商品")
    private List<WebGoodsCheckOut> goods;

    @ApiModelProperty("订单套餐")
    private List<OrderPackageCheckOutVO> packageGoods;

    @ApiModelProperty("订单合计")
    private BigDecimal orderPrice;

    @ApiModelProperty("优惠券码")
    private String couponCode;

    @ApiModelProperty("优惠金额")
    private BigDecimal couponPrice;

    @ApiModelProperty("商品税价(GST+HST+PST的值)")
    private BigDecimal taxPrice;

    @ApiModelProperty("GST 订单税费总金额")
    private BigDecimal gstPrice;

    @ApiModelProperty("PST 订单税费总金额")
    private BigDecimal pstPrice;

    @ApiModelProperty("HST 订单税费总金额")
    private BigDecimal hstPrice;

    @ApiModelProperty("会员优惠价格")
    private BigDecimal memberPrice;

    @ApiModelProperty("总会员优惠率")
    private BigDecimal memberPer;


    //支付参数
    @ApiModelProperty("支付方式(1:现金支付,2:礼物卡支付,3:Paypal支付(POS没有这个支付),4:余额支付,5:Clover支付,6:积分兑换)")
    private Integer payType;

    @ApiModelProperty("现金金额|支付类型为1时传递")
    private BigDecimal cash;

    @ApiModelProperty("用户付款码(解密明文)|支付类型为4时传递")
    private String membershipNumber;


    @ApiModelProperty("礼物卡付款码|支付类型为2时传递")
    private String giftCode;

    @ApiModelProperty("externalId|支付类型为5时传递")
    private String externalId;
    @ApiModelProperty("paymentId|支付类型为5时传递")
    private String paymentId;
    @ApiModelProperty("clover支付ID|支付类型为5时传递")
    private String orderId;
    @ApiModelProperty("信用卡卡号|支付类型为5时传递")
    private String cardNo;
    @ApiModelProperty("信用卡类型|支付类型为5时传递")
    private String cardType;

    @ApiModelProperty("收取现金金额(支付类型为1时传递)")
    private BigDecimal receiveAmount;

}
